The present invention is directed to a data delivery system. More specifically, the present invention is directed to a peer-to-peer system for delivering data in a reliable and cost-effective manner.
The sheer amount of content on the Internet has grown dramatically during the past several decades. With the increasing popularity of multimedia objects like audio or video, this trend is expected to accelerate in the future. The efficient storage and distribution of these large objects is a challenging problem. The traditional approach of storing them in large data centers is expensive due to the high maintenance cost of those data centers. In addition, transmitting those objects from the data centers to end users, through a client-server-like system, can consume a prohibitive amount of bandwidth from one source.
One solution to the high bandwidth/high maintenance problem associated with such large data centers is a peer-to-peer (P2P) communication system. Examples of P2P systems include Napster®, Gnutella®, Kazaa®, and eDonkey®. In such systems, end users (i.e., peers) interested in file sharing participate as both clients and servers through an application overlay network. When a user locates an interesting file from another user, the downloading happens directly between the two without going through a central server.
One common problem with early P2P systems is “free riding”. Free riding occurs when a peer downloads files from others, but does not contribute or make its own files available to others. It has been observed that a large percentage of peers in such early P2P systems were free riders. To cut down on free-riding, some systems such as KaZaa use “participation levels” to track the contribution of each peer and give higher service priority to peers who contributed more. However, such systems have been proven to be very easy to circumvent without having to contribute.
A more recent P2P communications system that has been somewhat successful in preventing free-riding is a BitTorrent® system. In a BitTorrent® system, the original content provider creates a “meta file” (with the .torrent suffix name) for the “torrent file” (i.e. the data or content) it wants to share, and publishes the meta file on a Web site. Then, the content provider starts a peer-to-peer application called a client application with a full copy of the torrent file as the original seed. For each torrent file, there is a tracker site, or tracker node, whose URL is encoded in the meta file, to help peers find each other to exchange the file chunks. A peer that has downloaded the file completely also becomes a seed that could, in turn, provide downloading service to other peers. All peers sharing the torrent file in the system, including downloaders and seeds, self organize into a peer-to-peer network known as a torrent. There are many dedicated tracker sites on the Internet which may host thousands of torrents each.
An illustration of a prior art torrent 10 is shown in FIG. 1. As shown, torrent 10 is composed of a tracker node 11 and a plurality of peers 12 that are interested in sharing a particular file. The peers 12 are essentially nodes in torrent 10 that are running a client application for communicating with tracker node 11. Tracker node 11 contains information including a list of torrent files that are available for downloading and the identification of each peer 12 from which a particular torrent file can be downloaded. In this way, any peer 12 can use the information in tracker node 11 to locate and download an entire torrent file from any other peer 12 or it can download chunks of a torrent file from a plurality of peers 12, in parallel. As a result, as long as at least one of the peers 12 on torrent 10 is willing to serve, or make available, the file, the other peers 12 can download the file without the need for storing the file in a large data center. In addition, if multiple peers 12 make a particular file available on torrent 10, then the file can be downloaded from a number of different peers 12 in chunks, thereby spreading the consumption of bandwidth among the peers 12.
To prevent the “free riding” problem found in other P2P systems, BitTorrent® systems use a “tit-for-tat” incentive mechanism. Basically, the incentive is that each peer is provided with more download bandwidth as it increases its upload bandwidth. That is, the more a peer allows other peers to download its files, the more bandwidth the system allocates to the peer for downloading files from others. This ensures that peers with high uploading bandwidth also have corresponding high downloading bandwidth. Because each new participant brings extra resources to the distribution, this approach is highly scalable for a large number of users. This is in contrast to a client-server model where the capacity of the server is usually the bottleneck for a highly popular object. As a result, BitTorrent®-like systems are now widely used for large file distribution, such as the distribution of large software packages.
Although the incentive mechanism in current BitTorrent® systems encourages a peer to exchange file chunks with other peers in its local torrent, once the peer has finished downloading the file and become a seed (a peer having a full copy of the file), it has no incentive to stay in the torrent. This is due to the fact that the torrent is basically set up for the exchange of a particular file and once a peer has a complete copy of the file it has no reason to stay in the torrent other than to let others download the file from it. Thus, as more and more peers download a complete copy of the file, the performance of the torrent deteriorates to the point that it becomes difficult for the file to be located and downloaded. As a result, current BitTorrent® systems are not desirable for downloading older files.
In addition, current BitTorrent® systems do not provide a built-in search method. Instead, BitTorrent® users rely on Web-based search engines to locate the content they want to download. As a result, although peers within the same torrent cooperate in the distribution of a particular file, peers in different torrents cannot collaborate with each other because they have no way of finding and communicating with each other. Therefore, in current BitTorrent systems, a peer needs to search for and join a new torrent each time it wants to download a different file.